#ifndef _CAMERA_H_
#define _CAMERA_H_

#include "Matrix.h"

/**
Camera represents a camera
*/
class Camera
{
public:
	Camera();
	virtual ~Camera();

	/**
	moves the camera to its location. Must be used every frame
	*/
	void Update(void);

	/**
	moves along world axis
	*/
	void MoveX(float step);
	void MoveY(float step);
	void MoveZ(float step);
	
	void RotateX(float angle);
	void RotateY(float angle);

	/**
	returns camera's world matrix
	*/
	Matrix44 GetMatrix(void);

	/**
	returns camera's inverted world matrix
	*/
	Matrix44 GetInvertedMatrix(void);
	Vector3 Position(void);
	void SetPosition(Vector3 &position);

	/**
	returns normalised vector that is the direction of looking
	*/
	Vector3 GetLookingDirection(void);

private:
	float angleX, angleY;
	Vector3 position;
};

#endif